function code = classify_6(buffer, last_index, buff_size, tol, max_range, mu, k)
%CLASSIFY_STATE 根据缓冲区中的 (x,y) 数据判断动力学状态
%
% 输入参数：
%   buffer    - 循环缓冲区，大小为 [buff_size x 2]，保存最近的 (x,y) 状态
%   last_index- 缓冲区中最后一个状态的索引
%   buff_size - 缓冲区大小（应大于最大检测周期）
%   tol       - 周期检测的容差
%   max_range - 系统的最大范围，用于检测发散情况
%   mu        - 参数 mu
%   k         - 参数 k
%
% 输出参数：
%   code      - 状态代码，含义如下：
%               1  : P2A（周期-2）
%               2  : P4A（周期-4）
%               3  : QPA（准周期性）
%               4  : HCA（超混沌）

% 判断发散：如果任何状态超过了 max_range
if any(abs(buffer(:)) > max_range)
    code = 4;  % HCA：超混沌
    return;
end

% 取最后状态
final_state = buffer(last_index, :);

% 检测周期：在缓冲区内检测 p=1:(buff_size-1)
period_found = 0;
for p = 1:(buff_size - 1)
    idx_prev = mod(last_index - p - 1, buff_size) + 1;
    if norm(final_state - buffer(idx_prev, :)) < tol
        period_found = p;
        break;
    end
end

if period_found > 0
    % 如果检测到周期，则判断是否为周期-2或周期-4
    if period_found == 2
        code = 1;  % P2A：周期-2
    elseif period_found == 4
        code = 2;  % P4A：周期-4
    else
        code = 3;  % QPA：准周期性
    end
else
    % 若没有周期，判断是否为超混沌
    LEs_result = LEs(buffer, mu, k, 500);  % 计算 Lyapunov 指数，500 步作为稳定性判断
    if sum(LEs_result > 0) >= 2  % 两个以上正的 Lyapunov 指数
        code = 4;  % HCA：超混沌
    else
        code = 3;  % QPA：准周期性
    end
end
end
